home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-12-14 | 5.1 KB | 255 lines | [TEXT/ALFA] |
-
- alpha::extension emacs 0.20 {
- newPref f useEmacsMenu 1 global emacsToggle
- newPref f emacLastWordIfTouching 0 global effectLastToggle
- menu::buildProc emacs emacsBindings
- emacsToggle
- effectLastToggle
- alpha::addToPreferencePage Packages emacLastWordIfTouching useEmacsMenu
- } help {file "Emacs Help"}
-
-
- proc effectLastToggle {args} {
- global emacLastWordIfTouching
- if $emacLastWordIfTouching {
- rename upcaseWord __upcaseWord
- rename downcaseWord __downcaseWord
- rename capitalizeWord __capitalizeWord
- ;proc upcaseWord {} {
- set p [getPos]
- backwardWord
- set sw [getPos]
- forwardWord
- set ew [getPos]
- goto $p
- if {$p == $ew} {
- backwardWord
- __upcaseWord
- } else {
- __upcaseWord
- }
- }
- ;proc downcaseWord {} {
- set p [getPos]
- backwardWord
- set sw [getPos]
- forwardWord
- set ew [getPos]
- goto $p
- if {$p == $ew} {
- backwardWord
- __downcaseWord
- } else {
- __downcaseWord
- }
- }
- ;proc capitalizeWord {} {
- set p [getPos]
- backwardWord
- set sw [getPos]
- forwardWord
- set ew [getPos]
- goto $p
- if {$p == $ew} {
- backwardWord
- while {![regexp {\w} [lookAt [getPos]]]} {
- forwardChar
- }
- __capitalizeWord
- } else {
- __capitalizeWord
- }
- }
- unbind 'h' <z> hiliteWord
- bind 'h' <z> touchHiliteWord
- } else {
- if {[info command __upcaseWord] != ""} {
- rename upcaseWord {}
- rename downcaseWord {}
- rename capitalizeWord {}
-
- rename __upcaseWord upcaseWord
- rename __downcaseWord downcaseWord
- rename __capitalizeWord capitalizeWord
- unbind 'h' <z> touchHiliteWord
- bind 'h' <z> hiliteWord
- }
- }
- }
-
- proc touchHiliteWord {} {
- if {[getPos]==[selEnd]} {
- set p [getPos]
- backwardWord
- set sw [getPos]
- forwardWord
- set ew [getPos]
- goto $p
- if {$p == $ew} {
- select $sw $ew
- } else {
- forwardWord
- set start [getPos]
- backwardWord
- select $start [getPos]
- }
- } else {
- forwardChar
- forwardWord
- set start [getPos]
- backwardWord
- select $start [getPos]
- }
- }
-
- proc beginningOfLogicalLine {} {
- beginningOfLine
- set p [getPos]
- set limit [expr [nextLineStart $p] -1]
- set llstart [search -f 1 -r 1 -n -l $limit {[^ \t\r\n]} $p]
- if {$llstart != ""} {
- goto [lindex $llstart 0]
- }
- }
-
- proc emacsToggle {args} {
- global useEmacsMenu
- if $useEmacsMenu {
- menu::insert Edit submenu end emacs
- } else {
- menu::removeFrom Edit submenu end emacs
- emacsBindings
- }
- }
-
- # so things will work ok with tcl 7 or 8
- namespace eval alpha {
- # Emacs-ish bindings.
- bind 0x33 <e> backwardDeleteWord
- bind 'b' <es> backwardWordSelect
- bind '<' <se> beginningOfBuffer
- bind 'b' <X> chooseWindowStatus
- bind 'l' <X> currentPosition
- bind ')' <Xs> endKeyboardMacro
- bind '>' <se> endOfBuffer
- bind 'x' <Xz> exchangePointAndMark
- bind 'w' <Xz> saveAs
- bind 'e' <X> executeKeyboardMacro
- bind 'f' <Xz> findFile
- bind 'f' <es> forwardWordSelect
- bind 'c' <z> prefixChar
- bind 'x' <z> prefixChar
- bind 'r' <e> repeatSearchBackward
- bind 's' <e> repeatSearchForward
- bind 's' <Xz> save
- bind '(' <sX> startKeyboardMacro
- bind 'o' <X> otherThing
- bind '1' <X> zoom
- bind 'k' <X> killWindowStatus
- bind 'u' <X> upcaseWord
-
- bind 'f' <e> forwardWord
- bind 'b' <e> backwardWord
- bind 'd' <e> deleteWord
- bind 'h' <e> backwardDeleteWord
- bind 'v' <e> pageBack
- bind 'w' <e> copy
- bind 'g' <e> gotoLine
- bind 'e' <e> nextSentence
- bind 'a' <e> prevSentence
- bind 'c' <e> capitalizeWord
- bind 'u' <e> upcaseWord
- bind 'l' <e> downcaseWord
-
- # added next -trf
- bind 'm' <e> beginningOfLogicalLine
- bind 'x' <e> execute
- bind '\ ' <e> oneSpace
- bind '\ ' <o> oneSpace
-
- bind 'd' <X> killRegion
- }
-
- proc emacsBindings {} {
- global useEmacsMenu
- if $useEmacsMenu {
- menu -n emacs {
- "/F<BforwardChar"
- "/B<BbackwardChar"
- "/D<BdeleteChar"
- "/N<BnextLine"
- "/P<BpreviousLine"
- "(-"
- "/F<IforwardWord"
- "/B<IbackwardWord"
- "/D<IdeleteWord"
- "/v<IdeleteWord"
- "/H<IbackwardDeleteWord"
- "/u<IbackwardDeleteWord"
- "(-"
- "/K<BkillLine"
- "/Y<Byank"
- "/A<BbeginningOfLine"
- "/E<BendOfLine"
- "/O<BopenLine"
- "(-"
- "/V<BpageForward"
- "/V<IpageBack"
- "/L<BcenterRedraw"
- "(-"
- "/ <BsetMark"
- "/W<Bcut"
- "/W<Icopy"
- "(-"
- "/C<IcapitalizeWord"
- "upcaseWord"
- "/L<IdowncaseWord"
- "(-"
- "/X<Iexecute"
- "/U<BiterationCount"
- "/G<BabortEm"
- }
- } else {
- namespace eval alpha {
- bind 'f' <z> forwardChar
- bind 'b' <z> backwardChar
- bind 'd' <z> deleteChar
- bind 'n' <z> nextLine
- bind 'p' <z> previousLine
- bind 'f' <o> forwardWord
- bind 'b' <o> backwardWord
- bind 'd' <o> deleteWord
- bind 0x33 <so> deleteWord
- bind 'h' <o> backwardDeleteWord
- bind 0x33 <o> backwardDeleteWord
- bind 'k' <z> killLine
- bind 'y' <z> yank
- bind 'a' <z> beginningOfLine
- bind 'e' <z> endOfLine
- bind 'o' <z> openLine
- bind 'v' <z> pageForward
- bind 'v' <o> pageBack
- bind 'l' <z> centerRedraw
- bind '\ ' <z> setMark
- bind 'w' <z> cut
- bind 'w' <o> copy
- bind 'c' <o> capitalizeWord
- bind 'l' <o> downcaseWord
- bind 'x' <o> execute
- bind 'u' <z> iterationCount
- bind '.' <z> abortEm
- }
- }
- }
-
- proc killRegion {} {
- set from [getMark]
- set to [getPos]
- if {$to < $from} {
- deleteText $to $from
- } else {
- deleteText $from $to
- }
- }
-
-